#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>

//作业标题(1372)
//qsort模拟实现
//作业内容
//模仿qsort的功能实现一个通用的冒泡排序
//利用这个仿qsort函数,来实现数组元素的排序

//先来实现一个冒泡对一个数组的排序
//int cmp_int(const void* e1, const void* e2)
//{
//	return (*(int*)e1) - (*(int*)e2);
//}
//void Swap(char* buf1,char* buf2,int width)
//{
//	int i = 0;
//	for (i=0;i<width;i++)
//	{
//		int temp = 0;
//		temp = *buf1;
//		*buf1 = *buf2;
//		*buf2 = temp;
//		buf1++;
//		buf2++;
//
//	}
//}
//void my_qsort(void* base, size_t sz,size_t width,int (*cmp)(const void* e1,const void* e2))
//{
//	size_t i = 0;
//	size_t j = 0;
//	for (i = 0; i < sz - 1; i++)
//	{
//		for (j = 0; j < sz - 1 - i; j++)
//		{
//			if (cmp((char*)base+j*width,(char*)base+(j+1)*width)>0)
//			{
//				Swap((char*)base + j * width, (char*)base + (j + 1) * width,width);
//				//int temp = 0;
//				//temp = *(p + j);
//				//*(p + j) = *(p + j + 1);
//				//*(p + j + 1) = temp;
//			}
//		}
//	}
//
//}
//int main()
//{
//	int arr[10] = { 10,9,8,7,6,5,4,3,2,1 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	//sort(arr, sz);
//	my_qsort(arr, sz,sizeof(arr[0]),cmp_int);
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//
//	return 0;
//}	



//实现对一个结构体中整型age的排序
//struct stu
//{
//	char name[10];
//	int age;
//};
//int cmp_age(const void* e1, const void* e2)
//{
//	return ((struct stu*)e1)->age - ((struct stu*)e2)->age;
//}
//void Swap(char* buf1, char* buf2, int width)
//{
//	int i = 0;
//	for (i = 0; i < width; i++)
//	{
//		int temp = 0;
//		temp = *buf1;
//		*buf1 = *buf2;
//		*buf2 = temp;
//		buf1++;
//		buf2++;
//
//	}
//}
//void my_qsort(void* base, size_t sz, size_t width, int (*cmp)(const void* e1, const void* e2))
//{
//	size_t i = 0;
//	size_t j = 0;
//	for (i = 0; i < sz - 1; i++)
//	{
//		for (j = 0; j < sz - 1 - i; j++)
//		{
//			if (cmp((char*)base + j * width, (char*)base + (j + 1) * width) > 0)
//			{
//				Swap((char*)base + j * width, (char*)base + (j + 1) * width, width);
//				//int temp = 0;
//				//temp = *(p + j);
//				//*(p + j) = *(p + j + 1);
//				//*(p + j + 1) = temp;
//			}
//		}
//	}
//
//}
//
//int main()
//{
//	struct stu s[3] = { {"zhangsan",45},{"lisi",30},{"wanger",67}};
//	int sz = sizeof(s) / sizeof(s[0]);
//	my_qsort(s, sz, sizeof(s[0]), cmp_age);
//	return 0;
//}


//实现对一个结构体中char型的排序
//struct stu
//{
//	char name[10];
//	int age;
//};
//int cmp_age(const void* e1, const void* e2)
//{
//	return strcmp(((struct stu*)e1)->name,((struct stu*)e2)->name);
//}
//void Swap(char* buf1, char* buf2, int width)
//{
//	int i = 0;
//	for (i = 0; i < width; i++)
//	{
//		int temp = 0;
//		temp = *buf1;
//		*buf1 = *buf2;
//		*buf2 = temp;
//		buf1++;
//		buf2++;
//
//	}
//}
//void my_qsort(void* base, size_t sz, size_t width, int (*cmp)(const void* e1, const void* e2))
//{
//	size_t i = 0;
//	size_t j = 0;
//	for (i = 0; i < sz - 1; i++)
//	{
//		for (j = 0; j < sz - 1 - i; j++)
//		{
//			if (cmp((char*)base + j * width, (char*)base + (j + 1) * width) > 0)
//			{
//				Swap((char*)base + j * width, (char*)base + (j + 1) * width, width);
//				//int temp = 0;
//				//temp = *(p + j);
//				//*(p + j) = *(p + j + 1);
//				//*(p + j + 1) = temp;
//			}
//		}
//	}
//
//}
//
//int main()
//{
//	struct stu s[3] = { {"zhangsan",45},{"lisi",30},{"wanger",67} };
//	int sz = sizeof(s) / sizeof(s[0]);
//	my_qsort(s, sz, sizeof(s[0]), cmp_age);
//	return 0;
//}


int main()
{
	unsigned char a = 200;
	//首先a=200，200是一个整型，char 200需要将整型截断为char
	unsigned char b = 100;
	unsigned char c = 0;
	c = a + b;
	//a+b 只有整型才能相加，char型的a和b需要先整型提升为int，然后进行a+b的运算
	// 转换为c后，c为char，需要进行截断
	//200  11001000
	//100  01100100
	//a+b
	//00000000 00000000 00000001 00101100   //300
	//00101100
	//00000000 00000000 00000000 00101100   //44
	printf( "%d %d", a + b, c);
	return 0;
}
//char类型的取值为0-255，8个为1的二进制位